我知大家都忙,直接進主題。
Android studio開一個新的專案,進入他的activity_main.xml檔:
這應該是第一個接觸到的也最容易上手的元件,專案建立後立刻就附贈一個"Hello World"的TextView如下:
<LinearLayout ...>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
/>
</LinearLayout>
先忽略父層Layout,以這個TextView來認識元件的屬性
以下三種按鈕一樣在activity_main.xml中操作。
介紹完TextView,現在來介紹他的子類之一,也是很常使用的Button。
button是一種由文字或icon或兩者組成的元件,並且在用戶觸碰時產生執行我們設定的動作。
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text"
... />
將所需的圖片放在res/drawable資料夾中,有使用到Image的部分,為了照顧有視力方面缺陷的用戶,IDE都會要求設置圖片描述這個屬性(android:contentDescription),輔助工具會朗讀出我們設置的描述。
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/button_icon"
android:contentDescription="@string/button_icon_desc"
... />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:drawableLeft="@drawable/button_icon"
... />
最後android:drawableLeft="@drawable/button_icon"這個屬性,IDE會建議改成drawableStart,提示如下:
Consider replacing android:drawableLeft with android:drawableStart="@drawable/button_icon" to better support right-to-left layouts
註:android系統依據各地區使用語言的習慣,分為由右到左RTL跟由左到右LTR兩種系統,RTL時start=right;LTR時start=left。如果app國際化的話,也是要考慮這一塊的,我們幼幼班先有這種國際觀就好XD。
總之,從善如流跟著改了後,發現icon消失了...
可以用回android:drawableLeft ,如果不想看到IDE的提醒底色那可以使用另一種寫法:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/black"
app:icon ="@drawable/button_icon"
app:iconGravity="textStart"
android:text="@string/button_text"
android:textAllCaps="false"/>
顯示如下:
顧名思義,就是在activity中一個按鈕的監聽器,如果用戶按了按鈕,這個監聽器就會做出我們指定的事情,就用上面activity_main.xml檔做好的Alarm Button來試試看如何在MainActivity.kt檔使用。
就讓用戶點擊第一個只有text的button時跳出一條Toast訊息。
第1行的意思就是跟MainActivty說,在你這邊叫btnAlarm的是一個Button類型的傢伙,aka在xml檔那裡id叫"button"。
然後接下來就是在幫btnAlarm設定一個監聽器,用戶點了它,就會做出兩個花括號{}中間的事情,也就是跳出一條"You click the Alarm Button"的訊息。
//在MainActivity onCreat()裡
val btnAlarm :Button= findViewById(R.id.button)
btnAlarm.setOnClickListener {
Toast.makeText(this,"You click the Alarm Button",Toast.LENGTH_SHORT).show()
}
如果不設監聽器是否可以達到一樣的效果呢?答案是Yes
這是在activity中聲明一個方法,並將這方法在xml檔中按鈕的屬性android:onClick設定我們定義好的方法,來響應用戶的點擊事件,現在以第二的icon按鈕來試試。
分為兩步驟設置:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {...}
//sendToast()定義在onCreate花括號之外喔
fun sendToast(view: View){
Toast.makeText(this,"You click the Alarm ImageButton",Toast.LENGTH_SHORT).show()
}
}
2.activity_main.xml中設定點擊事件(android:onClick="sendToast"),就完成囉。
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/black"
android:onClick="sendToast"
... />
參考官方文件
明天見
建議作者該說一下是哪個頁面再開始講解code
(雖然後面的圖片讓我回推了你在哪個頁面)
感謝回饋,不過我自己看自己文章有盲點,請問您說的是文章一開始嗎?
是的,這篇的一開始,但這文章的後面也有這方面的問題
我知大家都忙,直接進主題
(建議這時候就該說你在哪個頁面,再開始講你要講的東西)
TextView
這應該是第一個接觸到的也最容易上手的元件,專案建立後立刻就附贈一個"Hello World"的TextView如下:
如果講完原理 要切換到其他script 講其他東西時也建議說一下要轉到哪個Script
好的,謝謝建議。